<html>
<head><meta charset="utf-8"><title>steering meeting 2018-11-16 · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html">steering meeting 2018-11-16</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="147669925"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147669925" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147669925">(Nov 14 2018 at 14:14)</a>:</h4>
<p><strong>Reminder:</strong> Steering meeting planned <strong>this Friday</strong>. I just posted a <a href="https://internals.rust-lang.org/t/compiler-steering-committee-meeting/8588/19?u=nikomatsakis" target="_blank" title="https://internals.rust-lang.org/t/compiler-steering-committee-meeting/8588/19?u=nikomatsakis">comment on internals</a> laying out some thoughts for an agenda. Feedback desired!</p>
<p>cc <span class="user-group-mention" data-user-group-id="492">@T-compiler</span></p>



<a name="147816844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147816844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147816844">(Nov 16 2018 at 13:34)</a>:</h4>
<p>I can't make this meeting :( I'll try to catch up on everything afterwards!</p>



<a name="147821504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147821504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147821504">(Nov 16 2018 at 14:57)</a>:</h4>
<p><span class="user-group-mention" data-user-group-id="492">@T-compiler</span> meeting in a few minutes</p>



<a name="147821690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147821690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147821690">(Nov 16 2018 at 15:00)</a>:</h4>
<p>/me makes a sandwich first</p>



<a name="147821831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147821831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147821831">(Nov 16 2018 at 15:03)</a>:</h4>
<p>Now you've made me hungry, <span class="user-mention" data-user-id="123586">@nagisa</span></p>



<a name="147821931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147821931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147821931">(Nov 16 2018 at 15:04)</a>:</h4>
<p>Let's get started at 10:05, seems like a nice round number</p>



<a name="147821946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147821946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147821946">(Nov 16 2018 at 15:04)</a>:</h4>
<p>o/</p>



<a name="147821995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147821995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147821995">(Nov 16 2018 at 15:05)</a>:</h4>
<p>o/</p>



<a name="147822006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822006">(Nov 16 2018 at 15:05)</a>:</h4>
<p>o/</p>



<a name="147822055"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822055" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822055">(Nov 16 2018 at 15:06)</a>:</h4>
<p>So, I had proposed that we work more on "future planning"</p>



<a name="147822124"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822124" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822124">(Nov 16 2018 at 15:07)</a>:</h4>
<p>Specifically <a href="https://internals.rust-lang.org/t/compiler-steering-committee-meeting/8588/19?u=nikomatsakis" target="_blank" title="https://internals.rust-lang.org/t/compiler-steering-committee-meeting/8588/19?u=nikomatsakis">I wrote</a></p>
<blockquote>
<p>I still hope we can talk about our priorities and planning for the next year. I'd like to do a few things:</p>
<ul>
<li>Gather up all the major initiatives that are being contemplated, and ensure that they are represented in some way on <a href="https://drive.google.com/file/d/1pI_69tI8uz83Sd7V7TvzltRACFUDPoO2/view" target="_blank" title="https://drive.google.com/file/d/1pI_69tI8uz83Sd7V7TvzltRACFUDPoO2/view">my compiler planning diagram</a></li>
<li>For each one, identify:<ul>
<li>Major steps or refactorings that ought to be represented themselves</li>
<li>Experiments we can do to get an estimate for how effective something will be (especially relevant to performance tasks)</li>
<li>Figure out places where it would be helpful to discuss in detail at the All Hands</li>
</ul>
</li>
</ul>
</blockquote>
<p>however, I don't think we necessarily need to focus just on refactorings of the compiler. I guess the question is sort of "what do we think our major priorities should be and how can we structure ourselves to achieve them"...?</p>



<a name="147822197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822197">(Nov 16 2018 at 15:08)</a>:</h4>
<p>I've been thinking a bit about conway's law (“… organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations")</p>



<a name="147822201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822201">(Nov 16 2018 at 15:09)</a>:</h4>
<p>the flip side I guess is that we should look at what we want and try to organize for it :)</p>



<a name="147822224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822224">(Nov 16 2018 at 15:09)</a>:</h4>
<p>I think the answer depends (among other things) on what projects we can find interested people for</p>



<a name="147822241"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822241" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822241">(Nov 16 2018 at 15:09)</a>:</h4>
<p>maybe. I feel like people will come to most projects, if we have available leadership, but that is the trick</p>



<a name="147822305"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822305" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822305">(Nov 16 2018 at 15:10)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> had an interesting post talking about another angle on compiler performance as well</p>



<a name="147822309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822309">(Nov 16 2018 at 15:10)</a>:</h4>
<p>ok, replace "people" with "leaders" in the above :)</p>



<a name="147822317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822317">(Nov 16 2018 at 15:10)</a>:</h4>
<p>the idea of building more distributed caching</p>



<a name="147822339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822339">(Nov 16 2018 at 15:10)</a>:</h4>
<blockquote>
<p>ok, replace "people" with "leaders" in the above :)</p>
</blockquote>
<p>I think the trick here is also that we can't expect to just figure this out up front, to some extent. It's kind of a cycle. But I guess we can find a few things and hope to expand from there</p>



<a name="147822356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822356">(Nov 16 2018 at 15:11)</a>:</h4>
<p>(We talked before about having working groups with 2 leaders, an idea which I like)</p>



<a name="147822373"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822373" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822373">(Nov 16 2018 at 15:11)</a>:</h4>
<p>but it seems like starting from "people" is tricky, since we're an open organization etc, so it seems better to somehow explore the "tech side" a bit first?</p>



<a name="147822432"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822432" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822432">(Nov 16 2018 at 15:12)</a>:</h4>
<p>anyway, one thought I had when it comes to compiler perf was trying to talk about (a) if we have big ideas that could be transformative and (b) how we can evaluate their potential</p>



<a name="147822439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822439">(Nov 16 2018 at 15:12)</a>:</h4>
<p>sure, we need some details on the individual projects before people can know if they'd want to lead them</p>



<a name="147822453"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822453" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822453">(Nov 16 2018 at 15:13)</a>:</h4>
<p>I have things I would love to work on/lead, but I’m worried about my time</p>



<a name="147822459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822459">(Nov 16 2018 at 15:13)</a>:</h4>
<p>also a factor</p>



<a name="147822461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822461">(Nov 16 2018 at 15:13)</a>:</h4>
<p>(I’ve already talked about this with <span class="user-mention" data-user-id="116009">@nikomatsakis</span> last all-hands)</p>



<a name="147822523"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822523" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822523">(Nov 16 2018 at 15:14)</a>:</h4>
<p>this would be somewhat mitigated by having more than one person in the lead</p>



<a name="147822529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822529">(Nov 16 2018 at 15:14)</a>:</h4>
<p>at the highest level, I think our ideas for "radically transforming" total compilation time are roughly this:</p>
<ul>
<li>parallelize with many threads</li>
<li>do what we do better:<br>
    - type-check faster, trait checking, etc<br>
    - optimize MIR and generate better LLVM<br>
    - need to look at "time breakdown" across projects a bit perhaps?</li>
<li>defer, coallesce, and avoid work<br>
    - multi-crate compilation model<br>
    - MIR-only rlibs, which helps identify duplicates as well as dead code<br>
    - "polymorphization" to coallesce monomorphized instances that have the same code</li>
<li>distribute and cache work across machines</li>
</ul>



<a name="147822634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822634">(Nov 16 2018 at 15:16)</a>:</h4>
<p>I'm not sure if the second "do what we do better" category is useful</p>



<a name="147822644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822644">(Nov 16 2018 at 15:16)</a>:</h4>
<p>I guess maybe parallel compilation is along that theme too :)</p>



<a name="147822661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822661">(Nov 16 2018 at 15:16)</a>:</h4>
<p>there might be another category, specific to incr. comp.: cache work that we don't cache now</p>



<a name="147822674"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822674" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822674">(Nov 16 2018 at 15:17)</a>:</h4>
<p>interesting</p>



<a name="147822676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822676">(Nov 16 2018 at 15:17)</a>:</h4>
<p>e.g. when a compilation session fails</p>



<a name="147822678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822678">(Nov 16 2018 at 15:17)</a>:</h4>
<p>I was thinking that RLS etc is sort of an orthogonal category</p>



<a name="147822686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822686">(Nov 16 2018 at 15:17)</a>:</h4>
<p>Just thought of it, but a nice way to visualise our query engine and time everything takes would be nice. I have some inspired ideas on it…</p>



<a name="147822688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822688">(Nov 16 2018 at 15:17)</a>:</h4>
<p>(though incremental is not specific to rLS)</p>



<a name="147822760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822760">(Nov 16 2018 at 15:18)</a>:</h4>
<p>At the very least to more easily deduce where bottlenecks are, etc.</p>



<a name="147822765"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822765" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822765">(Nov 16 2018 at 15:18)</a>:</h4>
<p>FWIW I've found a useful rule of thumb to be "if this thing I'm optimizing takes zero time, will that radically improve things?" -- where an example is that if type checking took zero time in rustc I feel like it wouldn't be that radically different an experience than we have today</p>



<a name="147822768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822768">(Nov 16 2018 at 15:18)</a>:</h4>
<p>in my mental venn diagram RLS and batch-compilation intersect at the query engine</p>



<a name="147822794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822794">(Nov 16 2018 at 15:19)</a>:</h4>
<blockquote>
<p>FWIW I've found a useful rule of thumb to be "if this thing I'm optimizing takes zero time, will that radically improve things?" -- where an example is that if type checking took zero time in rustc I feel like it wouldn't be that radically different an experience than we have today</p>
</blockquote>
<p>I .. am not sure</p>



<a name="147822801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822801">(Nov 16 2018 at 15:19)</a>:</h4>
<p>I also find that useful</p>



<a name="147822809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822809">(Nov 16 2018 at 15:19)</a>:</h4>
<p>(something to measure at least)</p>



<a name="147822811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822811">(Nov 16 2018 at 15:19)</a>:</h4>
<p>I think in general this comes back to having a better picture of our profiles</p>



<a name="147822820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822820">(Nov 16 2018 at 15:19)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> did great work here but it hasn't made it full circle into perf yet :(</p>



<a name="147822827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822827">(Nov 16 2018 at 15:19)</a>:</h4>
<p>in particular, I think that for some "use cases"/"scenarios" type-check etc can be quite significant</p>



<a name="147822878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822878">(Nov 16 2018 at 15:20)</a>:</h4>
<p>I also suspect we won't find a "silver bullet", but more we'll do 2 or 3 things that are high impact</p>



<a name="147822883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822883">(Nov 16 2018 at 15:20)</a>:</h4>
<p>but together are better</p>



<a name="147822888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822888">(Nov 16 2018 at 15:20)</a>:</h4>
<p>true yeah</p>



<a name="147822895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822895">(Nov 16 2018 at 15:20)</a>:</h4>
<p>that said, I do agree that type-checking alone is not going to be enough</p>



<a name="147822906"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822906" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822906">(Nov 16 2018 at 15:20)</a>:</h4>
<blockquote>
<p>in my mental venn diagram RLS and batch-compilation intersect at the query engine</p>
</blockquote>
<p>I'm not 100% sure what this means, <span class="user-mention" data-user-id="124287">@mw</span></p>



<a name="147822917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822917">(Nov 16 2018 at 15:21)</a>:</h4>
<p>I guess just that they both build on it?</p>



<a name="147822919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822919">(Nov 16 2018 at 15:21)</a>:</h4>
<blockquote>
<p>I'm not 100% sure what this means, <span class="user-mention" data-user-id="124287">@mw</span></p>
</blockquote>
<p>that the central evaluation model must support both, but the goals are a bit at a tension</p>



<a name="147822922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822922">(Nov 16 2018 at 15:21)</a>:</h4>
<p>ps <span class="user-mention" data-user-id="123586">@nagisa</span> totally agree about having more ability to visualize queries etc</p>



<a name="147822987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822987">(Nov 16 2018 at 15:22)</a>:</h4>
<p>That would be <a href="https://github.com/rust-lang/rust/issues/53631" target="_blank" title="https://github.com/rust-lang/rust/issues/53631">https://github.com/rust-lang/rust/issues/53631</a>, and related issues. Turns out I had already documented some of my ideas here.</p>



<a name="147822991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822991">(Nov 16 2018 at 15:22)</a>:</h4>
<p>yeah, I guess I think that if we were going to engineer for a radically better RLS experience, the priorities would be very different</p>



<a name="147822993"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147822993" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zack M. Davis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147822993">(Nov 16 2018 at 15:22)</a>:</h4>
<p>I think there was speculation that killing off <code>NodeId</code> would help with incremental (but I don't know the details/have the measurements to know whether it was a priority)? <a href="https://github.com/rust-lang/rust/issues/50928" target="_blank" title="https://github.com/rust-lang/rust/issues/50928">https://github.com/rust-lang/rust/issues/50928</a></p>



<a name="147823000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823000">(Nov 16 2018 at 15:22)</a>:</h4>
<p>interesting</p>



<a name="147823007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823007">(Nov 16 2018 at 15:22)</a>:</h4>
<p>it's true, NodeId is not incremental friendly</p>



<a name="147823033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823033">(Nov 16 2018 at 15:23)</a>:</h4>
<p>that's mostly clean up at this point though</p>



<a name="147823041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823041">(Nov 16 2018 at 15:23)</a>:</h4>
<p>i.e. it won't change performance, just code quality</p>



<a name="147823052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823052">(Nov 16 2018 at 15:23)</a>:</h4>
<p>c'mon everybody loves convering from nodeid to hirid to defid to hirid and back</p>



<a name="147823097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823097">(Nov 16 2018 at 15:24)</a>:</h4>
<p>(improving code quality is also a way to improve contributor experience and improve our overall velocity)</p>



<a name="147823098"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823098" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823098">(Nov 16 2018 at 15:24)</a>:</h4>
<p>it's what I do for fun on the weekend</p>



<a name="147823117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823117">(Nov 16 2018 at 15:24)</a>:</h4>
<p>well so in terms of <a href="#narrow/stream/131828-t-compiler/subject/steering.20meeting.202018-11-16/near/147822529" title="#narrow/stream/131828-t-compiler/subject/steering.20meeting.202018-11-16/near/147822529">my bullet list above</a>, I guess my first question is: does anybody have any ideas that don't fit those categories?</p>



<a name="147823122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823122">(Nov 16 2018 at 15:24)</a>:</h4>
<p>I'm not saying we shouldn't do it :)</p>



<a name="147823125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823125">(Nov 16 2018 at 15:24)</a>:</h4>
<p>perhaps they are so broad it's not possible :)</p>



<a name="147823145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823145">(Nov 16 2018 at 15:24)</a>:</h4>
<p>if not, maybe we should drill a bit more into one of them?</p>



<a name="147823179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823179">(Nov 16 2018 at 15:25)</a>:</h4>
<p>incremental compilation wouldn't fit</p>



<a name="147823187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823187">(Nov 16 2018 at 15:25)</a>:</h4>
<p>I propose for the purposes of this meeting, we focus not on RLS btw, but rather "batch performance"</p>



<a name="147823197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823197">(Nov 16 2018 at 15:25)</a>:</h4>
<p>yeah =) I meant the list to be specific to batch compilation</p>



<a name="147823199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823199">(Nov 16 2018 at 15:25)</a>:</h4>
<p>aaaah hiii (/me was paying attention to rebase and missed the notification)</p>



<a name="147823201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823201">(Nov 16 2018 at 15:25)</a>:</h4>
<p>well, maybe into "avoid work"</p>



<a name="147823221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823221">(Nov 16 2018 at 15:25)</a>:</h4>
<p>I'd like to circle back to RLS at some point</p>



<a name="147823226"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823226" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823226">(Nov 16 2018 at 15:26)</a>:</h4>
<p>but it seems like we're already 25 min in and we have to start somewhere :)</p>



<a name="147823284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823284">(Nov 16 2018 at 15:26)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> there could be ways to improve time in the backend (linking, LTO) as well, but I haven’t looked too much at it.</p>



<a name="147823297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823297">(Nov 16 2018 at 15:26)</a>:</h4>
<p>at the very least it seems to me that clang’s LTO is doing ThinLTO much better than we, somehow</p>



<a name="147823299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823299">(Nov 16 2018 at 15:26)</a>:</h4>
<p>I think there's one thing that isn't explicitly covered, which affects UX. We currently are <em>average</em> in continuing past some points for errors. We continue after <em>some</em> parse errors, and we continue after <em>some</em> type check errors, but the experience of making the type checker happy and then being inundated with borrow checker errors is still the norm.</p>



<a name="147823310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823310">(Nov 16 2018 at 15:27)</a>:</h4>
<p>interesting <span class="user-mention" data-user-id="123586">@nagisa</span> ; dsymutil is something that Anthony Jones at Mozilla always points out as a surprising time consumer during linking on mac</p>



<a name="147823328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823328">(Nov 16 2018 at 15:27)</a>:</h4>
<p><span class="user-mention" data-user-id="119031">@Esteban Küber</span> very good point, that's <em>particularly problemetic</em> on RLS, I think</p>



<a name="147823331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823331">(Nov 16 2018 at 15:27)</a>:</h4>
<p>also defaulting to LLD would help with linking heavy codebases</p>



<a name="147823334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823334">(Nov 16 2018 at 15:27)</a>:</h4>
<p>also, the new lint ordering is bad</p>



<a name="147823339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823339">(Nov 16 2018 at 15:27)</a>:</h4>
<p>that is, I often get warnings about e.g. unused imports</p>



<a name="147823341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823341">(Nov 16 2018 at 15:27)</a>:</h4>
<p>I think that is tied to parallelizing work, if the unit of work are smaller it'd give us more ergonomic handling of those cases.</p>



<a name="147823343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823343">(Nov 16 2018 at 15:27)</a>:</h4>
<p>that are only unused because of typos or type-check errors later</p>



<a name="147823345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823345">(Nov 16 2018 at 15:27)</a>:</h4>
<p>I have previously said we should look for all the <code>fatal</code> calls and just remove them</p>



<a name="147823353"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823353" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823353">(Nov 16 2018 at 15:27)</a>:</h4>
<p>so that's good but I feel like another category of goal</p>



<a name="147823394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823394">(Nov 16 2018 at 15:28)</a>:</h4>
<p>more in the RLS camp, though perhaps distinct</p>



<a name="147823403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823403">(Nov 16 2018 at 15:28)</a>:</h4>
<p>still, definitely worth noting</p>



<a name="147823414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823414">(Nov 16 2018 at 15:28)</a>:</h4>
<p>(I also wanted to talk more about error messages at some point, perhaps a "UX" pillar is a good thing to look at)</p>



<a name="147823428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823428">(Nov 16 2018 at 15:28)</a>:</h4>
<p>interesting</p>



<a name="147823433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823433">(Nov 16 2018 at 15:28)</a>:</h4>
<p>there's no real need to stop the compiler if there's anything else it could be doing, even across crates (but we don't have the infra for that yet)</p>



<a name="147823437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823437">(Nov 16 2018 at 15:28)</a>:</h4>
<p>(I guess I'll come back afterwards and make minutes and note this stuff somewhere)</p>



<a name="147823460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823460">(Nov 16 2018 at 15:29)</a>:</h4>
<p>so yeah I was going to propose we talk a bit more about this bullet point:</p>
<ul>
<li>defer, coallesce, and avoid work<ul>
<li>multi-crate compilation model</li>
<li>MIR-only rlibs, which helps identify duplicates as well as dead code</li>
<li>"polymorphization" to coallesce monomorphized instances that have the same code</li>
</ul>
</li>
</ul>



<a name="147823465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823465">(Nov 16 2018 at 15:29)</a>:</h4>
<p>if a part of the compiler cannot handle incomplete/erroneous information, it should react to that itself and skip itself</p>



<a name="147823471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823471">(Nov 16 2018 at 15:29)</a>:</h4>
<p>(agreed)</p>



<a name="147823542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823542">(Nov 16 2018 at 15:30)</a>:</h4>
<p>(as opposed to preemptively stopping everything to avoid that situation)</p>



<a name="147823559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823559">(Nov 16 2018 at 15:30)</a>:</h4>
<blockquote>
<p>multi-crate compilation model</p>
</blockquote>
<p>as long as we make it work better than C’s multi-file compilation, we win by default!</p>



<a name="147823560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823560">(Nov 16 2018 at 15:30)</a>:</h4>
<p>That's the direction I feel we've been going in, it's just a lot of work :-/</p>



<a name="147823570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823570">(Nov 16 2018 at 15:30)</a>:</h4>
<p>I could see that being a "working group"</p>



<a name="147823588"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823588" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823588">(Nov 16 2018 at 15:31)</a>:</h4>
<p>i.e., come up with a design, which probably involves more use of sentinel values etc, and push it through</p>



<a name="147823590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823590">(Nov 16 2018 at 15:31)</a>:</h4>
<p>AFAIK the most work would be updating all the tests that would cause all sorts of warnings/errors</p>



<a name="147823593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823593">(Nov 16 2018 at 15:31)</a>:</h4>
<p>the working group that never stops working</p>



<a name="147823595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823595">(Nov 16 2018 at 15:31)</a>:</h4>
<p>it .. feels like it has an end</p>



<a name="147823597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823597">(Nov 16 2018 at 15:31)</a>:</h4>
<p>at some point, there are no more <code>fatal</code> calls :)</p>



<a name="147823620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823620">(Nov 16 2018 at 15:31)</a>:</h4>
<p>there aren't even that many today!</p>



<a name="147823625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823625">(Nov 16 2018 at 15:31)</a>:</h4>
<p>the working group that doesn't stop working even if it fails</p>



<a name="147823627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823627">(Nov 16 2018 at 15:31)</a>:</h4>
<p>most of it is the driver stopping if any errors were reported</p>



<a name="147823632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823632">(Nov 16 2018 at 15:31)</a>:</h4>
<p>I...get the pun now</p>



<a name="147823679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823679">(Nov 16 2018 at 15:32)</a>:</h4>
<p>/me groans</p>



<a name="147823703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823703">(Nov 16 2018 at 15:32)</a>:</h4>
<p>so I think polymorphization is pretty straightforward</p>



<a name="147823706"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823706" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823706">(Nov 16 2018 at 15:32)</a>:</h4>
<p>anyway, so, we have some estimates of mir-only rlibs from <span class="user-mention" data-user-id="124287">@mw</span> 's work -- one thing I'd really like to see us do is to try and estimate how much opportunity there is for what I'm calling "polymorphization" -- basically identifying cases where we can avoid instantiating MIR for each value of its type parameters.</p>



<a name="147823710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823710">(Nov 16 2018 at 15:32)</a>:</h4>
<p>we've seen some stabs here</p>



<a name="147823713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823713">(Nov 16 2018 at 15:32)</a>:</h4>
<p>i.e. it doesn't depend on other things</p>



<a name="147823716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823716">(Nov 16 2018 at 15:32)</a>:</h4>
<p>there are many knobs to turn</p>



<a name="147823725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823725">(Nov 16 2018 at 15:33)</a>:</h4>
<blockquote>
<p>"polymorphization" to coallesce monomorphized instances that have the same code</p>
</blockquote>
<p>is this referring to the same thing as LLVM’s merge-functions pass?</p>



<a name="147823731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823731">(Nov 16 2018 at 15:33)</a>:</h4>
<p>yes, but better I would think</p>



<a name="147823742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823742">(Nov 16 2018 at 15:33)</a>:</h4>
<p>multi-crate + mir-only rlibs interact, I think</p>



<a name="147823743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823743">(Nov 16 2018 at 15:33)</a>:</h4>
<p>I think the best thing to do is to do what we do in miri</p>



<a name="147823745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823745">(Nov 16 2018 at 15:33)</a>:</h4>
<p>well, that was one of my questions actually</p>



<a name="147823761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823761">(Nov 16 2018 at 15:33)</a>:</h4>
<p>miri can evaluate still-polymorphic code</p>



<a name="147823770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823770">(Nov 16 2018 at 15:33)</a>:</h4>
<p>I don't know whether there are places that could be mergerd, but merge-functions doesn't see it</p>



<a name="147823792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823792">(Nov 16 2018 at 15:33)</a>:</h4>
<p>if I understand you, <span class="user-mention" data-user-id="119009">@eddyb</span>, that's on the far  end of the spectrum,</p>



<a name="147823823"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823823" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823823">(Nov 16 2018 at 15:34)</a>:</h4>
<p>(it will error if e.g. layout needs to know a type parameter, but in the absence of that, it will keep working)</p>



<a name="147823853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823853">(Nov 16 2018 at 15:34)</a>:</h4>
<p>i.e., we identify not only cases where the static code is the same, but cases where we could thread some dictionaries etc</p>



<a name="147823856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823856">(Nov 16 2018 at 15:34)</a>:</h4>
<p>no, it's trivial: just make sure you don't choke on params</p>



<a name="147823865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823865">(Nov 16 2018 at 15:34)</a>:</h4>
<p>that..is not trivial when generating code</p>



<a name="147823870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823870">(Nov 16 2018 at 15:34)</a>:</h4>
<p>miri doesn't do any dictionary passing</p>



<a name="147823876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823876">(Nov 16 2018 at 15:34)</a>:</h4>
<p>well doing it in MIR would help in two respects: we could merge functions while they are still polymorphic (avoiding redoing some work) <em>and</em> we could then merge the monomorphisations as well (avoiding extra work of translating to LLVM IR and waiting for LLVM to optimize)</p>



<a name="147823879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823879">(Nov 16 2018 at 15:34)</a>:</h4>
<p>maybe we're talking past each other</p>



<a name="147823882"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823882" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823882">(Nov 16 2018 at 15:34)</a>:</h4>
<p>it just doesn't die on parametrized code if the evaluation doesn't depend on parameters</p>



<a name="147823887"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823887" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823887">(Nov 16 2018 at 15:34)</a>:</h4>
<p>ok, the <em>if</em> the tricky bit</p>



<a name="147823894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823894">(Nov 16 2018 at 15:34)</a>:</h4>
<p>that is, I thnk the first level is:</p>



<a name="147823905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823905">(Nov 16 2018 at 15:35)</a>:</h4>
<p>figuring out when you depend on the parameters and how</p>



<a name="147823909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823909">(Nov 16 2018 at 15:35)</a>:</h4>
<p>so that you can share the same LLVM code</p>



<a name="147823914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823914">(Nov 16 2018 at 15:35)</a>:</h4>
<p>the next level is:</p>



<a name="147823915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823915">(Nov 16 2018 at 15:35)</a>:</h4>
<p>e.g. miri can evaluate <code>Vec::new()</code> polymorphically</p>



<a name="147823920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823920">(Nov 16 2018 at 15:35)</a>:</h4>
<p>figuring out when you could make the LLVM code take dictionaries</p>



<a name="147823928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823928">(Nov 16 2018 at 15:35)</a>:</h4>
<p>sure, that's the first (and easier) level</p>



<a name="147823935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823935">(Nov 16 2018 at 15:35)</a>:</h4>
<p>I would presume we will shoot for the first level to start</p>



<a name="147823943"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823943" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823943">(Nov 16 2018 at 15:35)</a>:</h4>
<p>we can fix codegen to do the same, then have a simple analysis</p>



<a name="147823957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823957">(Nov 16 2018 at 15:35)</a>:</h4>
<p>yes, that is what I am proposing :)</p>



<a name="147823959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147823959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147823959">(Nov 16 2018 at 15:35)</a>:</h4>
<p>previous attempts failed because they introduced a much more complex mechanism</p>



<a name="147824007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824007">(Nov 16 2018 at 15:36)</a>:</h4>
<p>than making codegen not choke on still-polymorphic code</p>



<a name="147824009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824009">(Nov 16 2018 at 15:36)</a>:</h4>
<p>I was further going to propose</p>



<a name="147824014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824014">(Nov 16 2018 at 15:36)</a>:</h4>
<p>that we start by trying to do the analysis</p>



<a name="147824020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824020">(Nov 16 2018 at 15:36)</a>:</h4>
<p>so we can estimate how effective it is</p>



<a name="147824028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824028">(Nov 16 2018 at 15:36)</a>:</h4>
<p>(that is of course most of the work)</p>



<a name="147824029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824029">(Nov 16 2018 at 15:36)</a>:</h4>
<p>but that's ok</p>



<a name="147824036"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824036" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824036">(Nov 16 2018 at 15:36)</a>:</h4>
<p>+100 for more statistics</p>



<a name="147824041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824041">(Nov 16 2018 at 15:36)</a>:</h4>
<p>also, <span class="user-mention" data-user-id="123586">@nagisa</span>, something I was wondering about</p>



<a name="147824046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824046">(Nov 16 2018 at 15:36)</a>:</h4>
<p>(catching up with what you said)</p>



<a name="147824047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824047">(Nov 16 2018 at 15:36)</a>:</h4>
<p>the 'tcx/'gcx split arose from statistics :P</p>



<a name="147824054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824054">(Nov 16 2018 at 15:36)</a>:</h4>
<p>which I'm not even sure hold anymore</p>



<a name="147824061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824061">(Nov 16 2018 at 15:36)</a>:</h4>
<p>in LLVM, are there cases where we generate nominal types that prevent merge func ?</p>



<a name="147824081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824081">(Nov 16 2018 at 15:37)</a>:</h4>
<p>e.g. if you have two structs that have the same layout</p>



<a name="147824085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824085">(Nov 16 2018 at 15:37)</a>:</h4>
<p>will they get merged?</p>



<a name="147824094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824094">(Nov 16 2018 at 15:37)</a>:</h4>
<p>I never checked, but I doubt it would be an issue.</p>



<a name="147824096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824096">(Nov 16 2018 at 15:37)</a>:</h4>
<p>we generate nominal types based on the Rust type identity and I doubt LLVM merges them</p>



<a name="147824110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824110">(Nov 16 2018 at 15:37)</a>:</h4>
<blockquote>
<p>we generate nominal types based on the Rust type identity and I doubt LLVM merges them</p>
</blockquote>
<p>this was roughly my assumption, but I am not sure</p>



<a name="147824121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824121">(Nov 16 2018 at 15:38)</a>:</h4>
<p>basically I'm trying to figure out</p>



<a name="147824132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824132">(Nov 16 2018 at 15:38)</a>:</h4>
<p>especially since LLVM still has those accursed pointee types</p>



<a name="147824168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824168">(Nov 16 2018 at 15:38)</a>:</h4>
<p>how much <em>more</em> merging we would be able to do than LLVM can do -- obviously doing it earlier is also just better</p>



<a name="147824173"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824173" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824173">(Nov 16 2018 at 15:38)</a>:</h4>
<p>debuginfo is a bit of a problem here since it needs monomorphic code generally</p>



<a name="147824188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824188">(Nov 16 2018 at 15:38)</a>:</h4>
<p>hmm yes -- also debuginfo is a good thing to cover in the "UX" area</p>



<a name="147824191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824191">(Nov 16 2018 at 15:38)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> debuginfo usually doesn’t work with merged functions either way</p>



<a name="147824213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824213">(Nov 16 2018 at 15:39)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> we can assume that if the code doesn't e.g. access through pointers, then debuginfo can be opaque about it</p>



<a name="147824240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824240">(Nov 16 2018 at 15:39)</a>:</h4>
<p>PS: For the minutes, I am going to pay special attention to any message that has <span class="emoji emoji-1f446" title="point up">:point_up:</span> on it</p>



<a name="147824248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824248">(Nov 16 2018 at 15:39)</a>:</h4>
<p>so if you see something you think we should definitely remember to note, add that emoji :)</p>



<a name="147824267"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824267" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824267">(Nov 16 2018 at 15:39)</a>:</h4>
<p>oh this reminds me</p>



<a name="147824309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824309">(Nov 16 2018 at 15:40)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> could we preemptively get rid of pointee types by making every pointer a <code>*{}</code> and then ptrcasting before each load/store?</p>



<a name="147824323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824323">(Nov 16 2018 at 15:40)</a>:</h4>
<p><span class="user-mention" data-user-id="123586">@nagisa</span> sort of, but you're slowing down LLVM</p>



<a name="147824324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824324">(Nov 16 2018 at 15:40)</a>:</h4>
<blockquote>
<p>we can assume that if the code doesn't e.g. access through pointers, then debuginfo can be opaque about it</p>
</blockquote>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> are you sure? it seems like when running gdb, you might want to print things the code doesn't directly touch</p>



<a name="147824336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824336">(Nov 16 2018 at 15:40)</a>:</h4>
<p>I feel like we should talk to <span class="user-mention" data-user-id="129503">@Tom Tromey</span> about this</p>



<a name="147824340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824340">(Nov 16 2018 at 15:40)</a>:</h4>
<p><a href="https://github.com/rust-lang-nursery/rls/issues/6#issuecomment-436942412" target="_blank" title="https://github.com/rust-lang-nursery/rls/issues/6#issuecomment-436942412">https://github.com/rust-lang-nursery/rls/issues/6#issuecomment-436942412</a></p>



<a name="147824348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824348">(Nov 16 2018 at 15:40)</a>:</h4>
<p>I mean we are literally editing gdb/lldb to make them understand Rust</p>



<a name="147824351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824351">(Nov 16 2018 at 15:40)</a>:</h4>
<p>it's at least not a trivial yes or no</p>



<a name="147824352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824352">(Nov 16 2018 at 15:40)</a>:</h4>
<p>perhaps they can understand this too</p>



<a name="147824366"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824366" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824366">(Nov 16 2018 at 15:41)</a>:</h4>
<p>so I won't make anyone read that, but, it vaguely mentions that we wanted to do a bunch for 2018</p>



<a name="147824388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824388">(Nov 16 2018 at 15:41)</a>:</h4>
<p>more specifically, I was supposed to look into things like moving incremental quieres earlier than HIR</p>



<a name="147824455"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824455" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824455">(Nov 16 2018 at 15:42)</a>:</h4>
<p>do we have any plans for making sure these things... happen?</p>



<a name="147824473"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824473" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824473">(Nov 16 2018 at 15:42)</a>:</h4>
<p>and how we should prioritize low-hanging-fruit vs large-scale refactors?</p>



<a name="147824478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824478">(Nov 16 2018 at 15:42)</a>:</h4>
<p>(note for later: one other thing I think we could measure-- I hypothesize that when you have a lot of dependencies from <a href="http://crates.io" target="_blank" title="http://crates.io">crates.io</a>, much of the code within is not used by your crate, but we still force you type-check and build it, at least the first time. It might be nice if we didn't, or at least if we did it very late in the cycle. We could measure how much that would matter.)</p>



<a name="147824486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824486">(Nov 16 2018 at 15:43)</a>:</h4>
<blockquote>
<p>and how we should prioritize low-hanging-fruit vs large-scale refactors?</p>
</blockquote>
<p>that is <strong>precisely</strong> what I want us to be talking about :)</p>



<a name="147824498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824498">(Nov 16 2018 at 15:43)</a>:</h4>
<p>basically I think the answer is "yes" we have plans -- and we are trying to make them</p>



<a name="147824529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824529">(Nov 16 2018 at 15:44)</a>:</h4>
<p>stepping back one bit, we are trying in general within Rust to encourage the teams to set goals for themselves and organize to achieve them (and then track and report on our progress)</p>



<a name="147824571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824571">(Nov 16 2018 at 15:44)</a>:</h4>
<p>having well-thought out plans will certainly help with convincing whomever is paying you</p>



<a name="147824586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824586">(Nov 16 2018 at 15:44)</a>:</h4>
<p>bandwidth hasn't gotten much better, and it's also hard to keep track of everything  happening with incremental (at various scales)</p>



<a name="147824592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824592">(Nov 16 2018 at 15:44)</a>:</h4>
<p>one thing I would love to have <span class="user-mention" data-user-id="119009">@eddyb</span> is a more complete diagram listing the kinds of big refactors we think we need and what each one enables, how they interact</p>



<a name="147824607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824607">(Nov 16 2018 at 15:44)</a>:</h4>
<p>right, that would be very useful</p>



<a name="147824610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824610">(Nov 16 2018 at 15:44)</a>:</h4>
<p>it seems like "end-to-end query" is an important step</p>



<a name="147824618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824618">(Nov 16 2018 at 15:45)</a>:</h4>
<p>e.g., it will enable more parallelization</p>



<a name="147824626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824626">(Nov 16 2018 at 15:45)</a>:</h4>
<p>more incremental</p>



<a name="147824634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824634">(Nov 16 2018 at 15:45)</a>:</h4>
<p>maybe not right away, as we also have to make the queries "smaller"</p>



<a name="147824636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824636">(Nov 16 2018 at 15:45)</a>:</h4>
<p>but eventually :)</p>



<a name="147824661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824661">(Nov 16 2018 at 15:45)</a>:</h4>
<p>I also believe we have piled on more tech debt than is good for us</p>



<a name="147824668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824668">(Nov 16 2018 at 15:45)</a>:</h4>
<p>I'm not entirely convinced. we spend almost no time before the query system</p>



<a name="147824670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824670">(Nov 16 2018 at 15:46)</a>:</h4>
<p>so while I want us to focus on results, I think we need to also do cleanup</p>



<a name="147824729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824729">(Nov 16 2018 at 15:46)</a>:</h4>
<p>well from what I can see some cleanup is happening all the time</p>



<a name="147824733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824733">(Nov 16 2018 at 15:46)</a>:</h4>
<p>wasn't e.g. librustc or libsyntax spending like 5 seconds in parsing and expansion?</p>



<a name="147824734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824734">(Nov 16 2018 at 15:46)</a>:</h4>
<p>e.g. the LLVM traitification thing.</p>



<a name="147824739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824739">(Nov 16 2018 at 15:46)</a>:</h4>
<blockquote>
<p>I'm not entirely convinced. we spend almost no time before the query system</p>
</blockquote>
<p>fair point</p>



<a name="147824754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824754">(Nov 16 2018 at 15:47)</a>:</h4>
<p>well, <span class="user-mention" data-user-id="124287">@mw</span>, I guess it depends on our goals again -- e.g., if we ever want to get to faster updates for RLS, it's clearly key</p>



<a name="147824758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824758">(Nov 16 2018 at 15:47)</a>:</h4>
<p>and RLS wants, ideally, milliseconds</p>



<a name="147824764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824764">(Nov 16 2018 at 15:47)</a>:</h4>
<p>also we are very likely to increase in time in early frontend if we make our parsing more complex (GLL) etc.</p>



<a name="147824772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824772">(Nov 16 2018 at 15:47)</a>:</h4>
<p>or put more constructively: I support any initiative that collects numbers on where we should optimize</p>



<a name="147824777"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824777" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824777">(Nov 16 2018 at 15:47)</a>:</h4>
<p>which seems to be the general direction the language is heading towards</p>



<a name="147824792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824792">(Nov 16 2018 at 15:47)</a>:</h4>
<blockquote>
<p>well from what I can see some cleanup is happening all the time</p>
</blockquote>
<p>some, yes. but it's never been an explicit goal for us.</p>



<a name="147824794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824794">(Nov 16 2018 at 15:47)</a>:</h4>
<p><span class="user-mention" data-user-id="123586">@nagisa</span> I wouldn't want to introduce GLL unless it helps with parse times</p>



<a name="147824802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824802">(Nov 16 2018 at 15:47)</a>:</h4>
<p>specifically, GLL is one of the ways we can get fine-grained incremental parsing</p>



<a name="147824804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824804">(Nov 16 2018 at 15:47)</a>:</h4>
<blockquote>
<p>or put more constructively: I support any initiative that collects numbers on where we should optimize</p>
</blockquote>
<p>ok so maybe this should be one our top priorities for next steering meeting</p>



<a name="147824806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824806">(Nov 16 2018 at 15:47)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> you might end up having no choice but to introduce it regardless <span class="emoji emoji-1f642" title="slight smile">:slight_smile:</span></p>



<a name="147824807"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824807" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824807">(Nov 16 2018 at 15:47)</a>:</h4>
<p>should I assume that's <em>not</em> a goal for 2019 :)?</p>



<a name="147824809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824809">(Nov 16 2018 at 15:48)</a>:</h4>
<p>maybe we can stop here, actually, and try to collect our thoughts in last 10 mionutes</p>



<a name="147824850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824850">(Nov 16 2018 at 15:48)</a>:</h4>
<p>specifically:</p>



<a name="147824854"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824854" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824854">(Nov 16 2018 at 15:48)</a>:</h4>
<p>what are some action items and information we can gather to help us?</p>



<a name="147824865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824865">(Nov 16 2018 at 15:48)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> Ideally, the RLS could have a way to do local type checking on the current file, while at the same time kicking off a global incremental compilation. That way you can type/borrow check with information you have, while letting the full check happen later once the actual compilation finishes.</p>



<a name="147824872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824872">(Nov 16 2018 at 15:48)</a>:</h4>
<p>I don't think that's something we're geared to do.</p>



<a name="147824874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824874">(Nov 16 2018 at 15:48)</a>:</h4>
<p>one I see is:</p>
<ul>
<li>take another stab at collecting and organizing ideas, incorporating ideas around UX in particular, but also breaking out RLS from batch compilation</li>
</ul>



<a name="147824876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824876">(Nov 16 2018 at 15:48)</a>:</h4>
<p><span class="user-mention" data-user-id="119031">@Esteban Küber</span> it actually is</p>



<a name="147824878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824878">(Nov 16 2018 at 15:48)</a>:</h4>
<p>another I see is:</p>
<ul>
<li>gather statistics about where we spend our time from perf and perhaps elsewhere</li>
</ul>



<a name="147824895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824895">(Nov 16 2018 at 15:49)</a>:</h4>
<p>"local type-checking" just means "run the type-checking query for all the items in this module"</p>



<a name="147824910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824910">(Nov 16 2018 at 15:49)</a>:</h4>
<p>there's no reason not to do something more local, even, depending on the user's viewport</p>



<a name="147824911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147824911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147824911">(Nov 16 2018 at 15:49)</a>:</h4>
<p>perhaps:</p>
<ul>
<li>draw up a proposal for polymorphization analysis / strategy ?</li>
</ul>



<a name="147825002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825002">(Nov 16 2018 at 15:50)</a>:</h4>
<p>I volunteer for collecting some numbers on how parallel queries performs these days</p>



<a name="147825005"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825005" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825005">(Nov 16 2018 at 15:50)</a>:</h4>
<blockquote>
<p>should I assume that's <em>not</em> a goal for 2019 :)?</p>
</blockquote>
<p>in all seriousness, I think it is a legit question whether "fine-grained incremental parsing" should be a goal for 2019 or not -- it seems to depend on whether we are prioritizing RLS or batch</p>



<a name="147825006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825006">(Nov 16 2018 at 15:50)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> and someone needs to draw the graph of refactor dependencies</p>



<a name="147825016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825016">(Nov 16 2018 at 15:50)</a>:</h4>
<blockquote>
<p>I volunteer for collecting some numbers on how parallel queries performs these days</p>
</blockquote>
<p>ah great</p>



<a name="147825019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825019">(Nov 16 2018 at 15:50)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> glad to hear that, and it makes sense. I guess it'd be a factor of exposing that to the RLS.</p>



<a name="147825024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825024">(Nov 16 2018 at 15:50)</a>:</h4>
<p>so another:</p>
<ul>
<li>status report on parallel query performance (assigned to mw)</li>
</ul>



<a name="147825041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825041">(Nov 16 2018 at 15:51)</a>:</h4>
<p><span class="user-mention" data-user-id="119031">@Esteban Küber</span> TBH RLS could do it today if it was properly integrated and not siphoning data through a side-channel</p>



<a name="147825048"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825048" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825048">(Nov 16 2018 at 15:51)</a>:</h4>
<p>so it's more of an RLS design problem</p>



<a name="147825057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825057">(Nov 16 2018 at 15:51)</a>:</h4>
<p>ok, <span class="user-mention" data-user-id="119009">@eddyb</span>, nice</p>
<ul>
<li>lay out refactor dependencies</li>
</ul>
<p>(fwiw I've taken a few stabs at this but will try again)</p>



<a name="147825067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825067">(Nov 16 2018 at 15:51)</a>:</h4>
<p>let me collect those actions items into a hackmd doc</p>



<a name="147825097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825097">(Nov 16 2018 at 15:51)</a>:</h4>
<p>should I just make one for each steering meeting? and a master one?  is hackmd our "etherpad-like thing of choice"?</p>



<a name="147825100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825100">(Nov 16 2018 at 15:51)</a>:</h4>
<p>maybe we should make a github repository</p>



<a name="147825106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825106">(Nov 16 2018 at 15:51)</a>:</h4>
<p>it seems to be the hip thing to do these days</p>



<a name="147825118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825118">(Nov 16 2018 at 15:52)</a>:</h4>
<p>frankly, technical debt should be work items just as important as new features</p>



<a name="147825151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825151">(Nov 16 2018 at 15:52)</a>:</h4>
<p>it could host the rustc-guide etc</p>



<a name="147825156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825156">(Nov 16 2018 at 15:52)</a>:</h4>
<blockquote>
<p>frankly, technical debt should be work items just as important as new features</p>
</blockquote>
<p>I agree</p>



<a name="147825187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825187">(Nov 16 2018 at 15:52)</a>:</h4>
<p>having an official plan that we could get people working on full-time would be great</p>



<a name="147825213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825213">(Nov 16 2018 at 15:53)</a>:</h4>
<p>One thing that I've hit my head against, most recently trying to add an integrated lint in the libsyntax, is that the crate dependency graph is a bit coarse. When doing refactorings I often end up with circular dependencies that would ideally be fixed by making those crates smaller. Is that something that we should be doing proactively (smaller loosely tied crates) rather than reactively?</p>



<a name="147825229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825229">(Nov 16 2018 at 15:53)</a>:</h4>
<p>It doesn't happen often, but I feel this is something that will come up with the proposed refactors.</p>



<a name="147825243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Esteban Küber <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825243">(Nov 16 2018 at 15:53)</a>:</h4>
<p>And ties back to a separate conversation about moving <em>some</em> crates off repo.</p>



<a name="147825249"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825249" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825249">(Nov 16 2018 at 15:53)</a>:</h4>
<p>as in, being able to say, at the level of rust-lang/compiler, that you can't have these X, Y, Z nice things, without certain prerequisites, and have e.g. managers not involved with the development get behind that</p>



<a name="147825299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825299">(Nov 16 2018 at 15:54)</a>:</h4>
<p><span class="user-mention" data-user-id="119031">@Esteban Küber</span> the solution is almost never to split crates up</p>



<a name="147825312"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825312" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825312">(Nov 16 2018 at 15:54)</a>:</h4>
<p>in fact we can probably unsplit several crates nowadays, the split is no longer meaningful</p>



<a name="147825341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825341">(Nov 16 2018 at 15:55)</a>:</h4>
<p>reusable components, sure, but part of the compiler mainly need an "API root" crate, e.g. <code>librustc</code> and its query engine</p>



<a name="147825362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825362">(Nov 16 2018 at 15:55)</a>:</h4>
<p>(speaking of reusable components, <a href="https://github.com/rust-lang/rust/issues/55993" target="_blank" title="https://github.com/rust-lang/rust/issues/55993">https://github.com/rust-lang/rust/issues/55993</a>)</p>



<a name="147825452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825452">(Nov 16 2018 at 15:56)</a>:</h4>
<blockquote>
<p>One thing that I've hit my head against, most recently trying to add an integrated lint in the libsyntax, is that the crate dependency graph is a bit coarse. When doing refactorings I often end up with circular dependencies that would ideally be fixed by making those crates smaller. Is that something that we should be doing proactively (smaller loosely tied crates) rather than reactively?</p>
</blockquote>
<p>I would like to start refactoring the compiler into smaller crates, yes. I used to feel differently but my opinions have changed. I'd also like us to pay careful attention to the interfaces between those crates, and see if we can do better.</p>



<a name="147825459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825459">(Nov 16 2018 at 15:56)</a>:</h4>
<p>but I think this is something we should talk about</p>



<a name="147825463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825463">(Nov 16 2018 at 15:56)</a>:</h4>
<p>the current divisions are fairly random</p>



<a name="147825493"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825493" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825493">(Nov 16 2018 at 15:57)</a>:</h4>
<p>I think we should have less crates, but also more structured</p>



<a name="147825500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825500">(Nov 16 2018 at 15:58)</a>:</h4>
<blockquote>
<p>reusable components, sure, but part of the compiler mainly need an "API root" crate, e.g. <code>librustc</code> and its query engine</p>
</blockquote>
<p>(note that the salsa design explicitly avoids having a root place where all queries are declared -- rather, each crate declares traits that are composed at the very end)</p>



<a name="147825543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825543">(Nov 16 2018 at 15:58)</a>:</h4>
<p>(e.g. <code>librustc_syntax</code> / <code>librustc_front</code>)</p>



<a name="147825545"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825545" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825545">(Nov 16 2018 at 15:58)</a>:</h4>
<p>which is an alternative</p>



<a name="147825559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825559">(Nov 16 2018 at 15:58)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> how much overhead does that have?</p>



<a name="147825562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825562">(Nov 16 2018 at 15:58)</a>:</h4>
<p>but I've got to run, I'm going to try and draw up the bullet points though</p>



<a name="147825565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825565">(Nov 16 2018 at 15:58)</a>:</h4>
<blockquote>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> how much overhead does that have?</p>
</blockquote>
<p>zero?</p>



<a name="147825585"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825585" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825585">(Nov 16 2018 at 15:58)</a>:</h4>
<p>not sure what you mean by overhead though, I assume runtime overhead?</p>



<a name="147825590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825590">(Nov 16 2018 at 15:58)</a>:</h4>
<p>everything is built against <code>impl Trait</code>, so statically dispatched</p>



<a name="147825596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825596">(Nov 16 2018 at 15:58)</a>:</h4>
<p>it will cause a lot of the LLVM work to be deferred to the final crate</p>



<a name="147825605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825605">(Nov 16 2018 at 15:59)</a>:</h4>
<p>yes</p>



<a name="147825619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825619">(Nov 16 2018 at 15:59)</a>:</h4>
<p>but .. you're going to compile anyway</p>



<a name="147825625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825625">(Nov 16 2018 at 15:59)</a>:</h4>
<p>is everything generic over traits?</p>



<a name="147825632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825632">(Nov 16 2018 at 15:59)</a>:</h4>
<p>everything that needs to interact with the query system, yes</p>



<a name="147825637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825637">(Nov 16 2018 at 15:59)</a>:</h4>
<p>that... won't work in rustc</p>



<a name="147825642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825642">(Nov 16 2018 at 15:59)</a>:</h4>
<p>I'd like though to work on making those traits <code>dyn</code> capable, that'd be nice</p>



<a name="147825644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825644">(Nov 16 2018 at 15:59)</a>:</h4>
<p>they're not now, I think they could be</p>



<a name="147825655"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825655" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825655">(Nov 16 2018 at 15:59)</a>:</h4>
<p>not without more work than everything we've already thought about doing</p>



<a name="147825721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825721">(Nov 16 2018 at 16:00)</a>:</h4>
<p>(as I said, I don't see why they couldn't be dyn capable traits, but it would take some refactorings to do it)</p>



<a name="147825741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825741">(Nov 16 2018 at 16:00)</a>:</h4>
<p>we already dispatch queries in rustc through fn pointers anyway, so no difference there</p>



<a name="147825753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825753">(Nov 16 2018 at 16:00)</a>:</h4>
<p>anyway, I'm not proposing that, just saying that it's worth considering</p>



<a name="147825764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825764">(Nov 16 2018 at 16:00)</a>:</h4>
<p>the important bit is that the set of fn pointers is fixed</p>



<a name="147825773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825773">(Nov 16 2018 at 16:00)</a>:</h4>
<p>you need extra indirection if you want it to be pluggable</p>



<a name="147825801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825801">(Nov 16 2018 at 16:01)</a>:</h4>
<p>at best an array, at worst an <code>AnyMap</code></p>



<a name="147825817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825817">(Nov 16 2018 at 16:01)</a>:</h4>
<p>that is one direction; there are others. but let's defer this, as we are out of time, and I have to run :)</p>



<a name="147825826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825826">(Nov 16 2018 at 16:01)</a>:</h4>
<p>do we need runtime pluggability?</p>



<a name="147825834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825834">(Nov 16 2018 at 16:01)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> oh if you're making a list, you can throw in there "type-check on MIR instead of HIR" (i.e. don't run inference separate to the NLL type-checking), that might be an interesting aspect. and in general, moving away from doing things on the HIR</p>



<a name="147825840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825840">(Nov 16 2018 at 16:01)</a>:</h4>
<p><span class="emoji emoji-1f44b" title="wave">:wave:</span></p>



<a name="147825845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825845">(Nov 16 2018 at 16:02)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> we need cross-crate pluggability</p>



<a name="147825877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825877">(Nov 16 2018 at 16:02)</a>:</h4>
<p>I'll try to draw up some notes. I think I might make a rust-compiler-team repository, as well, to start hosting these minutes, design documents, and other things</p>



<a name="147825892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825892">(Nov 16 2018 at 16:02)</a>:</h4>
<p>I've not had much to contribute to this discussion, but I really enjoyed reading it, thanks everyone.</p>



<a name="147825949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825949">(Nov 16 2018 at 16:03)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> do you mean do <strong>all</strong> type inference on MIR? I'm not sure how that would work, as we need to do type-inference to even <strong>construct</strong> the MIR...? If you meant region checking and borrow checking, that's already on there.</p>



<a name="147825971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825971">(Nov 16 2018 at 16:03)</a>:</h4>
<p>I think I wrote to you about this... elsewhere, idk where</p>



<a name="147825998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147825998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147825998">(Nov 16 2018 at 16:03)</a>:</h4>
<p>you can encode uninferred HIR into MIR without much effort</p>



<a name="147826045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826045">(Nov 16 2018 at 16:04)</a>:</h4>
<p>most of the control-flow doesn't even depend on type inference</p>



<a name="147826177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826177">(Nov 16 2018 at 16:05)</a>:</h4>
<p>Making inference lazy would make it work all the time without necessarily requiring full inference <span class="emoji emoji-1f642" title="slight smile">:slight_smile:</span></p>



<a name="147826235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826235">(Nov 16 2018 at 16:06)</a>:</h4>
<p>Didn’t we have an item on making more things lazy?</p>



<a name="147826259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826259">(Nov 16 2018 at 16:06)</a>:</h4>
<p>I don't mean that :P</p>



<a name="147826318"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826318" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826318">(Nov 16 2018 at 16:07)</a>:</h4>
<p>Sure, but I believe there are some language constructs that could make cfg depend on inference/types</p>



<a name="147826329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826329">(Nov 16 2018 at 16:07)</a>:</h4>
<p>(associated constants come to mind)</p>



<a name="147826381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/steering%20meeting%202018-11-16/near/147826381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/steering.20meeting.202018-11-16.html#147826381">(Nov 16 2018 at 16:08)</a>:</h4>
<p>it's only the unwind path that can change, last I checked</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>